/*
 * Copyright (c) 2024, Intel Corporation
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the
 * 'Software'), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

////////////////////////////////////////////////////////////////////////////////
// !!! WARNING - AUTO GENERATED FILE. DO NOT EDIT DIRECTLY. !!!
// Generated by KernelBinToSource.exe tool
////////////////////////////////////////////////////////////////////////////////

#if !defined(MEDIA_BIN_DLL)
#include "vp_platform_interface.h"
#include "vp_render_common.h"
#endif
#include "igvpfc_420PL3_output_xe2.h"

#if defined(MEDIA_BIN_SUPPORT) && !defined(MEDIA_BIN_DLL)

unsigned int IGVPFC_420PL3_OUTPUT_GENERATION_XE2_SIZE = 0;
unsigned int *IGVPFC_420PL3_OUTPUT_GENERATION_XE2 = nullptr;
static bool getIGVPFC_420PL3_OUTPUT_XE2 = LoadMediaBin(IGVPFC_420PL3_OUTPUT_GENERATION_XE2_NAME, &IGVPFC_420PL3_OUTPUT_GENERATION_XE2_SIZE, &IGVPFC_420PL3_OUTPUT_GENERATION_XE2);

#endif  // defined(MEDIA_BIN_SUPPORT) && !defined(MEDIA_BIN_DLL)

#if !defined(MEDIA_BIN_DLL)
void AddVpNativeKernelEntryToListFc_420pl3_outputXe2(vp::VpPlatformInterface &vpPlatformInterface)
{
    vp::KRN_ARG IMAGEWRITE_CURBE[] =
    {
        {FC_420PL3_OUTPUT_IMAGEWRITE_WIDTH, 0, 0, 4, vp::ARG_KIND_GENERAL, false, vp::AddressingModeStateful},
        {FC_420PL3_OUTPUT_IMAGEWRITE_HEIGHT, 4, 0, 4, vp::ARG_KIND_GENERAL, false, vp::AddressingModeStateful},
        {FC_420PL3_OUTPUT_IMAGEWRITE_LUMAINDEX, 8, 0, 4, vp::ARG_KIND_GENERAL, false, vp::AddressingModeStateful},
        {FC_420PL3_OUTPUT_IMAGEWRITE_UPLINDEX, 12, 0, 4, vp::ARG_KIND_GENERAL, false, vp::AddressingModeStateful},
        {FC_420PL3_OUTPUT_IMAGEWRITE_VPLINDEX, 16, 0, 4, vp::ARG_KIND_GENERAL, false, vp::AddressingModeStateful},
        {FC_420PL3_OUTPUT_IMAGEWRITE_PRIVATE_BASE_STATELESS, 24, 0, 8, vp::ARG_KIND_GENERAL, false, vp::AddressingModeStateful},
        {FC_420PL3_OUTPUT_IMAGEWRITE_ENQUEUED_LOCAL_SIZE, 32, 0, 12, vp::ARG_KIND_GENERAL, false, vp::AddressingModeStateful},
        {FC_420PL3_OUTPUT_IMAGEWRITE_GLOBAL_ID_OFFSET, 0, 0, 12, vp::ARG_KIND_INLINE},
        {FC_420PL3_OUTPUT_IMAGEWRITE_LOCAL_SIZE, 12, 0, 12, vp::ARG_KIND_INLINE},
    };

    vp::KRN_EXECUTE_ENV IMAGEWRITE_PARAM =
    {
        0,         //barrier_count
        true,      //disable_mid_thread_preemption
        128,       //grf_count
        false,     //has_global_atomics
        true,      //has_no_stateless_write
        32,        //inline_data_payload_size
        192,       //offset_to_skip_per_thread_data_load
        32,        //simd_size
        true,      //subgroup_independent_forward_progress
        8,         //eu_thread_count
        false,     //has_fence_for_image_access
        false,     //has_sample
        true,      //has_4gb_buffers
        { 0, 0, 0 },         //work_group_walk_order_dimensions
        0,         //private_size
        0         //slm_size
    };

    vp::KRN_BTI IMAGEWRITE_BTI[] =
    {
        {FC_420PL3_OUTPUT_IMAGEWRITE_INPUTPLY, 0},
        {FC_420PL3_OUTPUT_IMAGEWRITE_INPUTPLUV, 1},
        {FC_420PL3_OUTPUT_IMAGEWRITE_OUTPUTPLY, 2},
        {FC_420PL3_OUTPUT_IMAGEWRITE_OUTPUTPLU, 3},
        {FC_420PL3_OUTPUT_IMAGEWRITE_OUTPUTPLV, 4},
    };

    vpPlatformInterface.InitVpDelayedNativeAdvKernel((uint32_t *)((uint8_t *)IGVPFC_420PL3_OUTPUT_GENERATION_XE2 + 0), 1920, IMAGEWRITE_CURBE, 9, 44, IMAGEWRITE_PARAM, IMAGEWRITE_BTI, 5, "ImageWrite_fc_420PL3_output");

}
#endif

#if !defined(MEDIA_BIN_SUPPORT) || defined(MEDIA_BIN_DLL)
DEFINE_SHARED_ARRAY_SIZE_UINT32(IGVPFC_420PL3_OUTPUT_GENERATION_XE2_SIZE, 1920);
extern const unsigned int IGVPFC_420PL3_OUTPUT_GENERATION_XE2[] =
{
    0x80100061, 0x7f054220, 0x00000000, 0x00000000, 0x80000065, 0x7f258220, 0x02000004, 0xffffffc0, 
    0x80000065, 0x7f058110, 0x01000024, 0x00ff00ff, 0x80001a40, 0x7f258220, 0x02007f24, 0x00000040, 
    0x80001940, 0x7f258220, 0x02007f24, 0x00000000, 0x8000195b, 0x7f048220, 0x01017f24, 0x00c07f04, 
    0x800c0061, 0x04050220, 0x00100104, 0x00000000, 0x80012031, 0x01140000, 0xfa007f8f, 0xf6780003, 
    0x8000c131, 0x030c0800, 0xfa007f8f, 0xf6740003, 0x00000060, 0x00000000, 0x00000000, 0x00000000, 
    0x00000060, 0x00000000, 0x00000000, 0x00000000, 0x00000060, 0x00000000, 0x00000000, 0x00000000, 
    0x3c8ca101, 0x00100000, 0x8000a065, 0x7f058220, 0x02000004, 0xffffffc0, 0x80001940, 0x7f058220, 
    0x02007f04, 0x00000000, 0x80032231, 0x050c0000, 0xfa007f8f, 0xf6740003, 0x2c240061, 0x00100047, 
    0x80000966, 0x80018220, 0x02008000, 0x400004c0, 0x80032241, 0x20010660, 0x01000584, 0x00004714, 
    0xac848153, 0x47430503, 0x80000041, 0x20010660, 0x01000594, 0x00004764, 0xac840053, 0x47ff0506, 
    0x00156052, 0x48040660, 0x010e0304, 0x04040104, 0x00141a52, 0x4a040660, 0x010e0604, 0x04140204, 
    0x00172331, 0x08440000, 0x20004814, 0x01684a14, 0x28200061, 0x00104839, 0x28200061, 0x00104a3b, 
    0x00148365, 0x10058660, 0x06100804, 0x807fffff, 0x00140065, 0x12058660, 0x06100a04, 0x807fffff, 
    0x00941a70, 0x21050660, 0x16101004, 0x00100804, 0x00140065, 0x14058660, 0x06100c04, 0x807fffff, 
    0x00541b70, 0x25050660, 0x16101204, 0x00100a04, 0x00140065, 0x19058660, 0x06100804, 0x80000000, 
    0x80540070, 0x00018660, 0x15000524, 0x00000000, 0x00140065, 0x16058660, 0x06100e04, 0x807fffff, 
    0x00141d70, 0x29050660, 0x16101404, 0x00100c04, 0x00140065, 0x1b058660, 0x06100a04, 0x80000000, 
    0x00141d6b, 0x23040228, 0xd28a2104, 0x08051904, 0x80140070, 0x00018660, 0x15000524, 0x00010001, 
    0x00d41d70, 0x2d050660, 0x16101604, 0x00100e04, 0x00140065, 0x1d058660, 0x06100c04, 0x80000000, 
    0x00141d6b, 0x27040228, 0xd28a2504, 0x0a051b04, 0x04541d62, 0x20018aa0, 0x0a102304, 0x00000000, 
    0x80d41170, 0x00018660, 0x15000524, 0x00020002, 0x00140065, 0x1f058660, 0x06100e04, 0x80000000, 
    0x80940070, 0x00018660, 0x15000524, 0x00030003, 0x00141d6b, 0x2b040228, 0xd28a2904, 0x0c051d04, 
    0x04141d62, 0x20010aa0, 0x0a102704, 0x00102000, 0x00141b6b, 0x2f040228, 0xd28a2d04, 0x0e051f04, 
    0x04d41a62, 0x20010aa0, 0x0a102b04, 0x00102000, 0x04941962, 0x20010aa0, 0x0a102f04, 0x00102000, 
    0x00140061, 0x31050aa0, 0x00102000, 0x00000000, 0x00140061, 0x33050aa0, 0x00102000, 0x00000000, 
    0x00140061, 0x35050aa0, 0x00102000, 0x00000000, 0x00140061, 0x37050aa0, 0x00102000, 0x00000000, 
    0x80541570, 0x00018660, 0x55000504, 0x00000000, 0x00162431, 0x00000000, 0xda0c39a6, 0x043c3144, 
    0x94400020, 0x00004000, 0x00000000, 0x00000018, 0x68840040, 0x00100505, 0x80140070, 0x00018660, 
    0x55000514, 0x00000000, 0x80001a6c, 0x04858660, 0x05000504, 0x00010001, 0x94000020, 0x00004000, 
    0x00000000, 0x00000020, 0x80000040, 0x05158660, 0x05000514, 0x00010001, 0x6884196c, 0x00110501, 
    0x00941970, 0x00010660, 0x56104a04, 0x00000104, 0x04940070, 0x00010660, 0x56104804, 0x00000484, 
    0x1494002e, 0x0000c000, 0x000002e0, 0x000002e0, 0x0014c531, 0x06440000, 0x20024814, 0x01684a14, 
    0x2820a461, 0x00104837, 0x28200061, 0x00104a39, 0x28200061, 0x00104843, 0x28200061, 0x00104a45, 
    0x00148565, 0x0e058660, 0x06100604, 0x807fffff, 0x00140065, 0x14058660, 0x06100c04, 0x807fffff, 
    0x00140065, 0x10058660, 0x06100804, 0x807fffff, 0x00941b70, 0x1f050660, 0x16100e04, 0x00100604, 
    0x00d41b70, 0x2b050660, 0x16101404, 0x00100c04, 0x00140065, 0x12058660, 0x06100a04, 0x807fffff, 
    0x00140065, 0x17058660, 0x06100604, 0x80000000, 0x00541d70, 0x23050660, 0x16101004, 0x00100804, 
    0x80d40070, 0x00018660, 0x15000534, 0x00000000, 0x00140065, 0x19058660, 0x06100804, 0x80000000, 
    0x80940070, 0x00018660, 0x15000534, 0x00010001, 0x00141e70, 0x27050660, 0x16101204, 0x00100a04, 
    0x00141e6b, 0x21040228, 0xd28a1f04, 0x06051704, 0x00140065, 0x1b058660, 0x06100a04, 0x80000000, 
    0x80540070, 0x00018660, 0x15000534, 0x00020002, 0x00141e6b, 0x25040228, 0xd28a2304, 0x08051904, 
    0x04d41c62, 0x20018aa0, 0x0a102104, 0x00000000, 0x00140065, 0x1d058660, 0x06100c04, 0x80000000, 
    0x80141170, 0x00018660, 0x15000534, 0x00030003, 0x00141d6b, 0x29040228, 0xd28a2704, 0x0a051b04, 
    0x04941c62, 0x20010aa0, 0x0a102504, 0x00102000, 0x80d41170, 0x00018660, 0x15000544, 0x00000000, 
    0x00141c6b, 0x2d040228, 0xd28a2b04, 0x0c051d04, 0x04541b62, 0x20010aa0, 0x0a102904, 0x00102000, 
    0x80941170, 0x00018660, 0x15000544, 0x00010001, 0x04141a62, 0x20010aa0, 0x0a102d04, 0x00102000, 
    0x80541170, 0x00018660, 0x15000544, 0x00020002, 0x04d40062, 0x22018aa0, 0x0a102104, 0x00000000, 
    0x80141170, 0x00018660, 0x15000544, 0x00030003, 0x04940062, 0x22010aa0, 0x0a102504, 0x00102200, 
    0x04540062, 0x22010aa0, 0x0a102904, 0x00102200, 0x04140062, 0x22010aa0, 0x0a102d04, 0x00102200, 
    0x00140061, 0x2f050aa0, 0x00102000, 0x00000000, 0x00140061, 0x31050aa0, 0x00102000, 0x00000000, 
    0x00140061, 0x33050aa0, 0x00102000, 0x00000000, 0x00140061, 0x35050aa0, 0x00102000, 0x00000000, 
    0x00140061, 0x3b050aa0, 0x00102200, 0x00000000, 0x00140061, 0x3d050aa0, 0x00102200, 0x00000000, 
    0x00140061, 0x3f050aa0, 0x00102200, 0x00000000, 0x00140061, 0x41050aa0, 0x00102200, 0x00000000, 
    0x0016a631, 0x00000000, 0xda0c37a7, 0x043c2f44, 0x00162731, 0x00000000, 0xda0c43a4, 0x043c3b45, 
    0x0014002f, 0x00004000, 0x00000000, 0x00000010, 0x28100061, 0x0010477f, 0x80022031, 0x00000004, 
    0x30207f0c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 
    0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
};
#endif // !defined(MEDIA_BIN_SUPPORT) || defined(MEDIA_BIN_DLL)